home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / share / perl / 5.10.0 / Pod / Simple / Text.pm < prev    next >
Encoding:
Text File  |  2009-06-26  |  4.0 KB  |  153 lines

  1.  
  2. require 5;
  3. package Pod::Simple::Text;
  4. use strict;
  5. use Carp ();
  6. use Pod::Simple::Methody ();
  7. use Pod::Simple ();
  8. use vars qw( @ISA $VERSION $FREAKYMODE);
  9. $VERSION = '2.02';
  10. @ISA = ('Pod::Simple::Methody');
  11. BEGIN { *DEBUG = defined(&Pod::Simple::DEBUG)
  12.           ? \&Pod::Simple::DEBUG
  13.           : sub() {0}
  14.       }
  15.  
  16. use Text::Wrap 98.112902 ();
  17. $Text::Wrap::wrap = 'overflow';
  18. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  19.  
  20. sub new {
  21.   my $self = shift;
  22.   my $new = $self->SUPER::new(@_);
  23.   $new->{'output_fh'} ||= *STDOUT{IO};
  24.   $new->accept_target_as_text(qw( text plaintext plain ));
  25.   $new->nix_X_codes(1);
  26.   $new->nbsp_for_S(1);
  27.   $new->{'Thispara'} = '';
  28.   $new->{'Indent'} = 0;
  29.   $new->{'Indentstring'} = '   ';
  30.   return $new;
  31. }
  32.  
  33. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  34.  
  35. sub handle_text {  $_[0]{'Thispara'} .= $_[1] }
  36.  
  37. sub start_Para  {  $_[0]{'Thispara'} = '' }
  38. sub start_head1 {  $_[0]{'Thispara'} = '' }
  39. sub start_head2 {  $_[0]{'Thispara'} = '' }
  40. sub start_head3 {  $_[0]{'Thispara'} = '' }
  41. sub start_head4 {  $_[0]{'Thispara'} = '' }
  42.  
  43. sub start_Verbatim    { $_[0]{'Thispara'} = ''   }
  44. sub start_item_bullet { $_[0]{'Thispara'} = $FREAKYMODE ? '' : '* ' }
  45. sub start_item_number { $_[0]{'Thispara'} = $FREAKYMODE ? '' : "$_[1]{'number'}. "  }
  46. sub start_item_text   { $_[0]{'Thispara'} = ''   }
  47.  
  48. sub start_over_bullet  { ++$_[0]{'Indent'} }
  49. sub start_over_number  { ++$_[0]{'Indent'} }
  50. sub start_over_text    { ++$_[0]{'Indent'} }
  51. sub start_over_block   { ++$_[0]{'Indent'} }
  52.  
  53. sub   end_over_bullet  { --$_[0]{'Indent'} }
  54. sub   end_over_number  { --$_[0]{'Indent'} }
  55. sub   end_over_text    { --$_[0]{'Indent'} }
  56. sub   end_over_block   { --$_[0]{'Indent'} }
  57.  
  58.  
  59. # . . . . . Now the actual formatters:
  60.  
  61. sub end_head1       { $_[0]->emit_par(-4) }
  62. sub end_head2       { $_[0]->emit_par(-3) }
  63. sub end_head3       { $_[0]->emit_par(-2) }
  64. sub end_head4       { $_[0]->emit_par(-1) }
  65. sub end_Para        { $_[0]->emit_par( 0) }
  66. sub end_item_bullet { $_[0]->emit_par( 0) }
  67. sub end_item_number { $_[0]->emit_par( 0) }
  68. sub end_item_text   { $_[0]->emit_par(-2) }
  69.  
  70. sub emit_par {
  71.   my($self, $tweak_indent) = splice(@_,0,2);
  72.   my $indent = ' ' x ( 2 * $self->{'Indent'} + 4 + ($tweak_indent||0) );
  73.    # Yes, 'STRING' x NEGATIVE gives '', same as 'STRING' x 0
  74.  
  75.   $self->{'Thispara'} =~ tr{\xAD}{}d if Pod::Simple::ASCII;
  76.   my $out = Text::Wrap::wrap($indent, $indent, $self->{'Thispara'} .= "\n");
  77.   $out =~ tr{\xA0}{ } if Pod::Simple::ASCII;
  78.   print {$self->{'output_fh'}} $out, "\n";
  79.   $self->{'Thispara'} = '';
  80.   
  81.   return;
  82. }
  83.  
  84. # . . . . . . . . . . And then off by its lonesome:
  85.  
  86. sub end_Verbatim  {
  87.   my $self = shift;
  88.   if(Pod::Simple::ASCII) {
  89.     $self->{'Thispara'} =~ tr{\xA0}{ };
  90.     $self->{'Thispara'} =~ tr{\xAD}{}d;
  91.   }
  92.  
  93.   my $i = ' ' x ( 2 * $self->{'Indent'} + 4);
  94.   #my $i = ' ' x (4 + $self->{'Indent'});
  95.   
  96.   $self->{'Thispara'} =~ s/^/$i/mg;
  97.   
  98.   print { $self->{'output_fh'} }   '', 
  99.     $self->{'Thispara'},
  100.     "\n\n"
  101.   ;
  102.   $self->{'Thispara'} = '';
  103.   return;
  104. }
  105.  
  106. #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  107. 1;
  108.  
  109.  
  110. __END__
  111.  
  112. =head1 NAME
  113.  
  114. Pod::Simple::Text -- format Pod as plaintext
  115.  
  116. =head1 SYNOPSIS
  117.  
  118.   perl -MPod::Simple::Text -e \
  119.    "exit Pod::Simple::Text->filter(shift)->any_errata_seen" \
  120.    thingy.pod
  121.  
  122. =head1 DESCRIPTION
  123.  
  124. This class is a formatter that takes Pod and renders it as
  125. wrapped plaintext.
  126.  
  127. Its wrapping is done by L<Text::Wrap>, so you can change
  128. C<$Text::Wrap::columns> as you like.
  129.  
  130. This is a subclass of L<Pod::Simple> and inherits all its methods.
  131.  
  132. =head1 SEE ALSO
  133.  
  134. L<Pod::Simple>, L<Pod::Simple::TextContent>, L<Pod::Text>
  135.  
  136. =head1 COPYRIGHT AND DISCLAIMERS
  137.  
  138. Copyright (c) 2002 Sean M. Burke.  All rights reserved.
  139.  
  140. This library is free software; you can redistribute it and/or modify it
  141. under the same terms as Perl itself.
  142.  
  143. This program is distributed in the hope that it will be useful, but
  144. without any warranty; without even the implied warranty of
  145. merchantability or fitness for a particular purpose.
  146.  
  147. =head1 AUTHOR
  148.  
  149. Sean M. Burke C<sburke@cpan.org>
  150.  
  151. =cut
  152.  
  153.